package org.springframework.howelly.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "Categoria")
public class Categoria implements Serializable {

    private static final long serialVersionUID = 1350491803294194914L;

    private Long id;

    private String name;

    private BigDecimal presupuesto;

    private BigDecimal actualTotal;

    private BigDecimal percentageOfTotal;

    private Obra obra;

    public Categoria() {

    }

    public Categoria(String name, double presupuesto) {
	this.name = name;
	this.presupuesto = new BigDecimal(presupuesto).setScale(2, RoundingMode.UNNECESSARY);
    }

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public String getName() {
	return name;
    }

    public void setName(String name) {
	this.name = name;
    }

    public BigDecimal getPresupuesto() {
	return presupuesto;
    }

    public void setPresupuesto(BigDecimal presupuesto) {
	this.presupuesto = presupuesto.setScale(2, RoundingMode.HALF_DOWN);
    }

    @ManyToOne(cascade = { CascadeType.ALL })
    public Obra getObra() {
	return obra;
    }

    public void setObra(Obra obra) {
	this.obra = obra;
    }

    @Transient
    public BigDecimal getActualTotal() {
	return actualTotal;
    }

    public void setActualTotal(BigDecimal actualTotal) {
	this.actualTotal = actualTotal;
    }

    @Transient
    public BigDecimal getPercentageOfTotal() {
	return percentageOfTotal;
    }

    public void setPercentageOfTotal(BigDecimal percentageOfTotal) {
	this.percentageOfTotal = percentageOfTotal;
    }
}
